package com.liaogui.设计模式.单例模式;

/**
 * 懒汉模式
 * 1.为什么要使用双检锁
 * @author liaogui
 * @date 2025/3/27 20:10
 */
public class SingletonLazy {

    private volatile static SingletonLazy instance = null;

    private SingletonLazy() {

    }

    public static SingletonLazy getInstance() {
        // 为了避免大量线程产生锁竞争
        if (instance == null) {
            synchronized (SingletonLazy.class) {
                // 为了避免线程在完成实例化操作后，另外一个线程等待锁释放后再次实例化
                if (instance == null) {
                    instance = new SingletonLazy();
                }
            }
        }
        return instance;
    }
}
